/**
 * 使用手册：
 * 1.所有的接口都按照 addDataReq，deleteDataReq，updateDataReq这样的规范去写
 * 2.完善 columnData 数组
 * 3.一些枚举数据的初始化用setSelectOptionsByColumnData 写入到 columnData 数组中
 * 4.需要单独执行的方法统一写到 initOtherData 方法中，该方法会在 onMounted 回调中触发，确保界面每次初始化都能够获取到最新数据
 */

import {
  ref,
  onMounted,
  getCurrentInstance,
  reactive,
  computed,
  watch,
} from 'vue';
import { columnDataTranform } from './columnDataTranform.js';
import { useUserStore } from '@/store';
const state = useUserStore();
const userInfo = state.userInfo;

import {
  addDataReq, // 增
  deleteDataReq, // 删
  updateDataReq, // 改
  getDetailReq, // 查
  getListReq, // 查列表
  exportDataReq,
} from '@/api/icon/index';
//❌❌❌❌ 以上都不需要改动

/**
 * columnData 模板配套的数组，涵盖table区域、search区域、新增区域、编辑区域、查看区域
 *
 * isSearch: 是否在搜索区域展示，默认展示
 *  isTable: 是否在表格区域展示，默认展示
 *    isAdd: 是否在新增区域展示，默认展示
 *   isEdit: 是否在编辑区域展示，默认展示
 *   isView: 是否在查看区域展示，默认展示
 *
 * 关键字：value、label
 * 
 * 
 * 默认的交互组件是input，如果其他的就需要标注出来
 * input:输入框
 * select:下拉框
 * chooseAddress: 选择地址
 * textarea:文本框
 * 
 * select的配置项目： 默认是label和value
 *        options:{
*           label: 'name',
            value: 'id',
 * 
 *        }
 * 
 * 
 * addSpan: 新增和编辑框中项的宽度默认是 12
 * span: 查看弹窗中占据的宽度
 * disabled:新增和编辑框中是否禁用
 * selectOptions: 下拉框数据
 * maxLength: 文本输入的最大长度
 * required: 是否为必填项
 *
 */

const columnData = ref(
  columnDataTranform([
    {
      title: '序号',
      dataIndex: 'num',
      slotName: 'num',
      isSearch: false,
      isView: false,
      isAdd: false,
    },
    {
      title: '名称',
      dataIndex: 'name',
      ellipsis: true,
      required: true,
      tooltip: true,
    },
    {
      title: '图标',
      type: 'file',
      slotName: 'url',
      required: true,
      dataIndex: 'url',
      ellipsis: true,
      tooltip: true,
    },
    {
      title: '操作',
      slotName: 'operate',
      fixed: 'right',
      isView: false,
      isSearch: false,
      isAdd: false,
      width: 280,
    },
  ])
);

/**
 * 给columns动态设置selectOptions的值
 */

const setSelectOptionsByColumnData = (dataIndex, data) => {
  let index = columnData.value.findIndex((v) => v.dataIndex == dataIndex);
  if (index > -1) {
    columnData.value[index].selectOptions = data;
  }
};

/**
 * 把需要单独处理的数据请求写到这里，
 */

const initOtherData = () => {};

export {
  addDataReq,
  deleteDataReq,
  updateDataReq,
  getDetailReq,
  getListReq,
  exportDataReq,
  columnData,
  initOtherData,
};
